<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>三位加逗号</title>
</head>
<body>
  <script type="text/javascript">
    // ?   当此字符紧随任何其他限定符（*、+、?、{n}、{n,}、{n,m}）之后时，匹配模式是“非贪心的”。“非贪心的”模式匹配搜索到的、尽可能短的字符串，而默认的“贪心的”模式匹配搜索到的、尽可能长的字符串。例如，在字符串“oooo”中，“o+?”只匹配单个“o”，而“o+”匹配所有“o”。

    //(?=pattern) 执行正向预测先行搜索的子表达式，该表达式匹配处于匹配pattern的字符串的起始点的字符串。它是一个非捕获匹配，即不能捕获供以后使用的匹配。例如，'Windows (?=95|98|NT|2000)' 匹配“Windows 2000”中的“Windows”，但不匹配“Windows 3.1”中的“Windows”。预测先行不占用字符，即发生匹配后，下一匹配的搜索紧随上一匹配之后，而不是在组成预测先行的字符后。后面的字符串也需要匹配才能够输出

    console.log(parseInt(1234567890.12663).toString().replace(/(\d{3})(?=\d)/g, '$1,'));
    function formatAmount(amt){
          if(amt && !isNaN(amt)){
              amt = parseInt(amt).toString();
              return amt.replace(/(\d{3})(?=\d)/g, '$1,');
          }else{
            return amt;
          }
    };
    console.log(formatAmount(12345678932))
  </script>
</body>
</html>